package leetcode.D200.T198;

class Solution {
//    public int rob(int[] nums) {
//        int dp1 = 0, dp2 = nums[0];
//        for(int i=1; i<nums.length; ++i) {
//            int temp = dp1;
//            dp1 = Math.max(dp1, dp2);
//            dp2 = temp + nums[i];
//        }
//        return Math.max(dp1, dp2);
//    }

    // 二刷
    /*public int rob(int[] nums) {
        int dp1 = nums[0], dp2 = 0;
        for(int i=1; i<nums.length; ++i) {
            int temp = Math.max(dp1, dp2);
            dp1 = dp2 + nums[i];
            dp2 = temp;
        }
        return Math.max(dp1, dp2);
    }*/

    // 三刷
    /*public int rob(int[] nums) {
        int d2 = 0, d1 = 0, result = 0;
        for(int i=0; i<nums.length; ++i) {
            result = Math.max(d2 + nums[i], d1);
            d2 = d1;
            d1 = result;
        }
        return result;
    }*/

    // 四刷
    public int rob(int[] nums) {
        int d1 = nums[0], d2 = 0;
        for(int i=1; i<nums.length; ++i) {
            int temp = Math.max(d1, d2+nums[i]);
            d2 = d1;
            d1 = temp;
        }
        return Math.max(d1, d2);
    }
}